import { Inject, Provide } from '@midwayjs/decorator';
import { IWebMiddleware, IMidwayWebNext } from '@midwayjs/web';
import { BaseSysLogService } from '../service/sys/log';
import { Context } from 'egg';

/**
 * 日志中间件
 */
@Provide()
export class BaseLogMiddleware implements IWebMiddleware {

    @Inject()
    baseSysLogService: BaseSysLogService;

    resolve() {
        return async (ctx: Context, next: IMidwayWebNext) => {
            this.baseSysLogService.record(ctx, ctx.url.split('?')[0], ctx.req.method === 'GET' ? ctx.request.query : ctx.request.body, ctx.admin ? ctx.admin.userId : null);
            await next();
        };
    }

}